1. SSH远程连接介绍
当前,在几乎所有的互联网企业环境中,最常用的提供Linux远程连接服务的工具就是SSH软件了。SSH分为SSH客户端和SSH服务端两部分。其中,SSH服务端包含的软件程序主要有openssh和openssl。openssh是提供SSH服务的程序,openssl是为SSH提供连接加密的程序。
在Linux系统中可以用如下方法查询SSH服务器端工具的安装情况。
2. SSH服务器端介绍
启动Linux系统时,默认情况下,SSH服务端程序就会随系统一起启动,SSH服务是一个守护进程(daemon),它在系统后台永久运行并时刻响应所有来自SSH客户端的连接请求。SSH服务器端的进程名为sshd,负责实时监听远程SSH客户端的连接请求并进行处理,这些请求包括公共密钥认证、密钥交换、对称密钥加密和非安全连接等。SSH服务是Linux系统优化时需要保留开机自启动的服务之一。
3. SSH客户端介绍
SSH客户端最常用的工具有:SecureCRT、Xshell、Putty及Linux下的SSH客户端软件。
4. SSH协议介绍
SSH服务器端和SSH客户端之间的交流都是通过SSH协议来实现的。SSH协议是Secure Shell Protocol的简写,由IETF网络小组(Network Working Group)制定。在进行数据传输之前,SSH先通过加密技术对联机数据包进行加密处理,然后再进行数据传输,这样就可确保传递的数据安全。
SSH是专为远程登陆会话和其他网络服务提供的安全性协议。利用SSH协议可以有效地防止远程管理过程中的信息泄露,在当前的生产环境中,绝大多数企业普遍采用SSH协议服务来代替传统的不安全的远程联机服务软件,如telnet(23端口,非加密的)等。
SSH协议有两个不兼容的版本,分别是SSH 1.x和SSH2.x。
OpenSSH同时支持SSH 1.x和SSH 2.x。用SSH 2.x的客户端程序不能连接到SSH 1.x的服务程序上,SSH 2.x比SSH 1.x更安全,默认情况下服务器端通过SSH 2.x协议提供服务。
5. SSH客户端和SSH服务器端远程连接原理示意图
下图为SSH客户端和SSH服务器端远程连接的形象示意图,下表为SSH服务远程连接需要设定的五个要素。
协议 | IP | 端口 | 用户名 | 密码 |
---|---|---|---|---|
SSH(加密的) | 192.168.111.111 | 22 | theshu | theshu |
telnet(未加密) | 192.168.111.111 | 23 | theshu | theshu |
6. SSH远程连接故障排查示例
假设远程Linux服务器的IP地址为192.168.111.111,现在要进行连接故障排查。
首先,查看远端服务是否畅通,注意:操作命令的机器为客户端计算机命令行,基本思路检查如下。
6.1. 利用ping命令检查(客户端执行)
具体命令为:
这里通过ping命令从客户端发包到服务器,看看是否有数据包返回,从而确定物理链路是不是通常。
提示:也可以通过
tracert -d 192.168.111.111
(仅适合Windows)或traceroute 192.168.111.111 -n
(适合Linux)命令跟踪路由情况,这两个跟踪路由的命令一般用于广域网。
6.2. 利用telnet或nmap命令检查(客户端执行)
具体命令为:
或
通过该命令可以查看连接服务器端192.168.111.111端口是不是处于开通状态,因为SSH服务默认开启的是22端口。
6.3. 检测iptables等防火墙策略是否阻挡了连接(服务端执行)
具体命令为:
7. SSH远程连接故障排查思路逻辑图
排查思路图解说明如下:
说明:
- 第一步:物理链路是否有问题(客户端执行)
ping 192.168.111.111
排查客户端到服务器端线路问题,ping是常用的网络连通性检查工具tracert -d 192.168.111.111
路由跟踪命令,也可以检查路是否畅通,-d是不进行反向解析
- 第二步:SSH服务是否有问题(客户端执行)
telnet 192.168.111.111 22
判断SSH服务器默认的22端口是否打开(客户端执行)。一看端口是否打开,二看端口是否改变了,三看防火墙等nmap 192.168.111.111 -p 22
也能达到和telnet相同的效果,但nmap仅在Linux中使用
- 第三步:是不是防火墙阻挡(服务器端查看)
/etc/init.d/iptables stop
Linux防火墙iptables,可能好心办坏事,阻挡了远程连接。在生产中防火墙规则按需开启